package models

import (
	"time"
)

// 支付状态
const (
	PaymentStatusPending  = 10 // 待支付
	PaymentStatusSuccess  = 20 // 支付成功
	PaymentStatusFailed   = 30 // 支付失败
	PaymentStatusRefunded = 40 // 已退款
)

// 支付记录
type Payment struct {
	BaseModel
	UserID     uint      `gorm:"index"`                       // 用户ID
	OrderID    uint      `gorm:"uniqueIndex"`                 // 订单ID
	PaymentNo  string    `gorm:"type:varchar(50);unique"`     // 支付系统流水号
	TradeNo    string    `gorm:"type:varchar(50);index"`      // 第三方支付流水号
	Amount     MyDecimal `gorm:"type:numeric(12,2);not null"` // 支付金额
	Method     string    `gorm:"type:varchar(20)"`            // 支付方式: wechat, alipay
	Status     int       `gorm:"default:10"`                  // 支付状态
	PaidTime   time.Time // 支付完成时间
	ExpireTime time.Time // 支付过期时间
}

// 支付通知日志
type PaymentNotifyLog struct {
	BaseModel
	PaymentID  uint      `gorm:"index"`      // 关联支付ID
	Request    string    `gorm:"type:text"`  // 原始通知请求
	Response   string    `gorm:"type:text"`  // 响应内容
	Status     int       `gorm:"default:10"` // 处理状态
	NotifyTime time.Time // 通知时间
}

func (Payment) TableName() string {
	return "payments"
}

func (PaymentNotifyLog) TableName() string {
	return "payment_notify_logs"
}
